import com.mysql.jdbc.jdbc2.optional.MysqlDataSource;

import javax.sql.DataSource;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.SQLException;
import java.util.Scanner;

/**
 * Created with IntelliJ IDEA.
 * Description:
 * User: 张杰
 * Date: 2022-03-29
 * Time: 20:01
 */
public class TestJDBC {
    public static void main(String[] args) throws SQLException {
        Scanner scanner = new Scanner(System.in);

        //1.创建好数据源
        DataSource dataSource = new MysqlDataSource();
        //设置数据库所在的地址
        ((MysqlDataSource) dataSource).setURL("jdbc:mysql://127.0.0.1:3306/java102?characterEncoding=utf8&useSSL=false");
        //设置登录数据库的用户名
        ((MysqlDataSource) dataSource).setUser("root");
        //设置登录数据库的密码
        ((MysqlDataSource) dataSource).setPassword("123456");

        //2.代码和数据库服务区建立连接
        Connection connection = dataSource.getConnection();

        System.out.println("请输入学号: ");
        int id = scanner.nextInt();
        System.out.println("请输入姓名: ");
        String name = scanner.next();
        //3.操作数据库,以插入数据为例
        //在JDBC中构造SQL语句,不必带上分号
        //String sql = "insert into student values(1,'张三')";
        String sql = "insert into student values(?,?)";//表明这两个的值还不确定(?,?)(?,?)

        //需要将String包装一个"语句对象"
        PreparedStatement statement = connection.prepareStatement(sql);
        //进行具体的替换工作,下表从1开始计算
        statement.setInt(1,id);//set类型需要与插入的数据一致
        statement.setString(2,name);
        //打印拼接结果
        System.out.println("statement:" + statement);

        //4.执行SQL
        // SQL里面如果是insert,update,delete,都使用executeUpdate 方法.
        // SQL里面如果是select,则使用executeQuery方法.
        // 返回值是该操作会影响几行数据
        int ret = statement.executeUpdate();
        System.out.println(ret);

        //5.此时 SQL已经执行完毕,还需要释放资源
        statement.close();;
        connection.close();

    }
}
